﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Runtime.Serialization;
using System.ServiceModel;
using ComunesMGI.DataTypes;
using ComunesMGI.Enums;
using ComunesMGI.Condiciones;


namespace SharepointWS
{
    [ServiceContract]
    public interface ISharepoint
    {
        [OperationContract]
        DataAltaIncidente AddIncidente(DataSistema sistema);

        [OperationContract]
        List<DataCampo> GetCampos(string sitioSistema, Lista lista, List<DataCampo> nomCampos);

        [OperationContract]
        List<DataIncidente> GetIncidentes(string sitio, List<Condicion> condiciones);

        [OperationContract]
        List<DataIncidente> GetIncidentesAsignablesWP(string sitioSistema, int wkpCod, DateTime fechaEstFinWP);

        [OperationContract]
        List<DataIncidenteReporte> GetIncidentesReporte(DataSistema sistema);

        [OperationContract]
        List<DataTarea> GetTareas(string sitio, int idIncidente);

        [OperationContract]
        string AsignarResponsable(string sitio, int idIncidente, int idTarea, DataUsuario usuario);

        [OperationContract]
        void SetIncidenteWP(string sitio, int idWorkPackage, int idIncidente);

        [OperationContract]
        List<DataIncidente> GetIncidentesWP(string sitio, int idWorkPackage);

        [OperationContract]
        string UploadFile(Stream sourceStream);

        [OperationContract]
        bool AdjuntarArchivoIncidente(string nombreArchivo, string urlSistema, int idIncidente, string nroTemp);

        [OperationContract]
        DataAltaTarea AddTarea(string urlSistema, List<DataCampo> campos);

        [OperationContract]
        int GetEsfuerzoTotalWP(string sitio, int idWP);

        [OperationContract]
        int GetEsfuerzoRestanteWP(string sitio, int idWP);

        [OperationContract]
        void CerrarAsociadosWP(string sitio, int wpId);

        [OperationContract]
        bool ChkWpIncidentesOTareasSinCerrar(string sitio, int wkpCod);

        [OperationContract]
        List<DataIncidenteReporte> GetIncidentesCreadosPeriodo(DataSistema sistemas, DateTime perFchIni, DateTime perFchFin);

        [OperationContract]
        List<DataIncidenteReporte> GetIncidentesReporteFiltroUsrEstado(DataSistema sistema, string usuario, string valorCampo, DateTime perFchIni, DateTime perFchFin);

        [OperationContract]
        DataIncidenteConCampos GetIncidente(int idIncidente, string sitio, List<DataCampo> campos);

        [OperationContract]
        void ModificarIncidente(string sitio, DataIncidenteConCampos incidente);

        [OperationContract]
        void DesasociarIncidentesWP(string sitio, List<int> incidentes);

        [OperationContract]
        DataTareaConCampos GetTarea(string sitio, int idTarea, List<DataCampo> campos);

        [OperationContract]
        List<DataSincronizarTarea> GetTareasAsignadasDespuesFecha(string sitio, DateTime fechaSincronizacion, string nombreUsuario);

        [OperationContract]
        void ModificarTarea(string sitio, DataTareaConCampos tarea);

        [OperationContract]
        bool IsFechaEstimadaEntregaWPMayorIncidentes(string sitio, int idWP, DateTime fechaEstEntWP);

        [OperationContract]
        DataEliminarTarea EliminarTarea (string sitio, int idTarea);

        [OperationContract]
        void EliminarIncidente(string sitio, int idIncidente);

    }

}
